package reflect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * 常见的元注释：
 * @Target:用于指明当前注解可以被应用的位置，具体位置由ElementTyge表示
 * ElementType.TYPE:注释可以在被应用在类上，接口上
 * ElementType.METHOD:注解可以被应用在方法上
 * ElementType.FIELD:注解可以被应用在成员变量/属性上
 * ElementType.PARAMETER:注解可以被应用在方法参数上
 * ElementType。CONSTRUCTOR:注解可以被应用在构造器上
 *
 *  例如：当前注解只能在类上使用
 *      @Target(ElementTyge.TYPE)
 *  例如：当前注解可以在类上及属性上使用（数组形式指定）
 * @Target（{ElementTyge.TYPE,ElementType.FIELD}）
 * @Retention:用于指明当前注解被保留的时间长短，具体形式由RetentionPolicy表示
 *  *    RetentionPolicy.SOURCE:注解保留在源文件中，不保留在class字节码文件中
 *  *    RetentionPolicy.CLASS:注解保留在class字节码文件中(默认保留级别)
 *  *    RetentionPolicy.RUNTIME:注解保留在class字节码文件中，在运行期也保留，可以通过反射获得注解信息
 * */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {

}
